Micron Document
____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|


The NomadNet German Wikipedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

🔍 Search

ÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻ

Lineare Optimierung
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
Die lineare Optimierung oder lineare Programmierung ist eines der Hauptverfahren des Operations Research und beschĂ€ftigt sich mit der Optimierung linearer Zielfunktionen ĂŒber einer Menge, die durch lineare Gleichungen und Ungleichungen eingeschrĂ€nkt ist. HĂ€ufig lassen sich lineare Programme (LPs) zur Lösung von Problemen einsetzen, fĂŒr die keine speziell entwickelten Lösungsverfahren bekannt sind, beispielsweise bei der Planung von Verkehrs- oder Telekommunikationsnetzen oder in der Produktionsplanung. Die lineare Optimierung ist ein Spezialfall der konvexen Optimierung und Grundlage mehrerer Lösungsverfahren in der ganzzahligen linearen und der nichtlinearen Optimierung. Viele Eigenschaften linearer Programme lassen sich als Eigenschaften von Polyedern interpretieren und auf diese Art geometrisch modellieren und beweisen.

Der Begriff „Programmierung“ ist eher im Sinne von „Planung“ zu verstehen als im Sinne der Erstellung eines Computerprogramms. Er wurde schon Mitte der 1940er-Jahre von George Dantzig, einem der BegrĂŒnder der linearen Optimierung, geprĂ€gt, bevor Computer zur Lösung linearer Optimierungsprobleme eingesetzt wurden.

Aus komplexitÀtstheoretischer Sicht ist die lineare Optimierung ein einfaches Problem, da es sich beispielsweise mit einigen Innere-Punkte-Verfahren in polynomialer Zeit lösen lÀsst. In der Praxis hat sich allerdings das Simplex-Verfahren als einer der schnellsten Algorithmen herausgestellt, obwohl es im schlechtesten Fall exponentielle Laufzeit besitzt. Neben dem eigentlichen Problem löst es immer auch das sogenannte duale Problem mit, was unter anderem in mehreren Verfahren zur Lösung ganzzahliger linearer Programme ausgenutzt wird.

Contents

‱ Geschichte
‱ Spieltheorie
‱ Literatur

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Geschichte

Die Methode der linearen Optimierung wurde 1939 von dem sowjetischen Mathematiker Leonid Witaljewitsch Kantorowitsch in seinem Aufsatz „Mathematische Methoden fĂŒr die Organisation und Planung der Produktion“ eingefĂŒhrt.cite-ref-1[1] Kurz danach veröffentlichte der Amerikaner Frank L. Hitchcock eine Arbeit zu einem Transportproblem. Damals erkannte man noch nicht die Bedeutung dieser Arbeiten. Unter anderem fĂŒr seinen Beitrag zur linearen Optimierung bekam Kantorowitsch aber 1975 den Nobelpreis fĂŒr Wirtschaftswissenschaften.

Mitte der 1940er-Jahre erkannte George Dantzig, dass sich viele praktische BeschrĂ€nkungen durch lineare Ungleichungen beschreiben ließen, und ersetzte erstmals die bis dahin vorherrschenden Faustregeln zur Lösung von Planungsproblemen durch eine (lineare) Zielfunktion. Insbesondere etablierte er damit eine klare Trennung zwischen dem Ziel der Optimierung und den Mitteln zur Lösung des Planungsproblems.

Den Durchbruch fĂŒr die lineare Optimierung schaffte Dantzig 1947, als er eine Arbeit ĂŒber das Simplex-Verfahren veröffentlichte, das heute eines der meistgenutzten Verfahren zur Lösung linearer Programme ist.cite-ref-2[2] Interesse an dieser Arbeit zeigten zunĂ€chst die amerikanischen MilitĂ€rs, speziell die US Air Force, die militĂ€rische EinsĂ€tze optimieren wollten. In den Folgejahren entwickelten Dantzig, John von Neumann, Oskar Morgenstern, Tjalling Koopmans und andere das Verfahren und die zugehörige Theorie weiter und stellten ZusammenhĂ€nge zur Spieltheorie her. Mit dem Aufkommen von Computern Mitte der 1950er-Jahre konnte man auch grĂ¶ĂŸere Probleme lösen. Etwa ab 1950 entdeckte die Wirtschaft, insbesondere Ölraffinerien, die Anwendungsmöglichkeiten der linearen Optimierung. Ab den 1970er-Jahren profitierte der Simplex-Algorithmus von algorithmischen Fortschritten der numerischen linearen Algebra. Insbesondere die Entwicklung numerisch stabiler LR-Zerlegungen zur Lösung großer linearer Gleichungssysteme trugen maßgeblich zum Erfolg und der Verbreitung des Simplex-Verfahrens bei.cite-ref-3[3]

Im Jahre 1979 veröffentlichte Leonid Khachiyan die Ellipsoidmethode, mit der lineare Programme erstmals – zumindest theoretisch – in Polynomialzeit gelöst werden konnten. 1984 begannen Narendra Karmarkar und andere mit der Entwicklung von Innere-Punkte-Verfahren zur Lösung linearer Programme.cite-ref-4[4] Diese Algorithmen, die als erste polynomiale Lösungsmethoden auch das Potential zum praktischen Einsatz hatten, wurden innerhalb des nachfolgenden Jahrzehnts noch wesentlich verbessert. Parallel dazu wuchs die Bedeutung des Simplex-Verfahrens zur Lösung von Unterproblemen in der ganzzahligen linearen Optimierung. Anfang der 1990er-Jahre wurden hier noch einmal große Fortschritte durch die Entwicklung neuer Pivotstrategien fĂŒr den dualen Simplex-Algorithmus erzielt, insbesondere durch das dual steepest edge pricing von John Forrest und Donald Goldfarb.

Sowohl das Simplex-Verfahren als auch verschiedene Innere-Punkte-Verfahren sind nach wie vor Gegenstand aktueller Forschung. Die lineare Optimierung wird heute in sehr vielen Bereichen zur Lösung praktischer Probleme eingesetzt. Unter der in praktischen Anwendungen fast immer erfĂŒllten Voraussetzung, dass die auftretenden LP-Matrizen dĂŒnnbesetzt sind (also nur wenige Nicht-Null-EintrĂ€ge besitzen), können heute lineare Programme mit mehreren hunderttausend Variablen oder Ungleichungen innerhalb weniger Minuten bis Stunden optimal gelöst werden. Die tatsĂ€chliche Lösungszeit hĂ€ngt dabei neben dem verwendeten Lösungsverfahren auch stark von der Anzahl und Anordnung der Nicht-Null-EintrĂ€ge in der beteiligten Matrix und von der Wahl der Startlösung ab.

Problemdefinition

Mathematische Formulierung

Bei einem linearen Programm (LP) sind eine Matrix A ∈ ∈ R m , n {\displaystyle A\in \mathbb {R} ^{m,n}} und zwei Vektoren b ∈ ∈ R m , 1 {\displaystyle b\in \mathbb {R} ^{m,1}} und c ∈ ∈ R 1 , n {\displaystyle c\in \mathbb {R} ^{1,n}} gegeben. Eine zulÀssige Lösung ist ein Vektor x ∈ ∈ R n {\displaystyle x\in \mathbb {R} ^{n}} mit nichtnegativen EintrÀgen, der die linearen Bedingungen

a 11 x 1 + 
 
 + a 1 n x n ≀ ≀ b 1 a 21 x 1 + 
 
 + a 2 n x n ≀ ≀ b 2 ⋼ ⋼ ⋼ ⋼ ⋼ ⋼ ⋼ ⋼ a m 1 x 1 + 
 
 + a m n x n ≀ ≀ b m {\displaystyle {\begin{matrix}a_{11}x_{1}&+\ldots &+a_{1n}x_{n}&\leq b_{1}\\a_{21}x_{1}&+\ldots &+a_{2n}x_{n}&\leq b_{2}\\\vdots &\vdots &\vdots &\vdots \\a_{m1}x_{1}&+\ldots &+a_{mn}x_{n}&\leq b_{m}\end{matrix}}}

erfĂŒllt. Ziel ist es, unter allen zulĂ€ssigen Vektoren x {\displaystyle x} einen zu finden, der das Standardskalarprodukt

c x = c 1 x 1 + 
 
 + c n x n {\displaystyle cx=c_{1}x_{1}+\ldots +c_{n}x_{n}}

maximiert. Dieses Optimierungsproblem in der sogenannten Standardform (auch als Ungleichungsform bezeichnet) wird oft abkĂŒrzend als

max { c x | A x ≀ ≀ b , x ≄ ≄ 0 } {\displaystyle \max\{cx\;|\;Ax\leq b,x\geq 0\}}

geschrieben, wobei die Bedingungen A x ≀ ≀ b {\displaystyle Ax\leq b} und x ≄ ≄ 0 {\displaystyle x\geq 0} komponentenweise zu verstehen sind.

DarĂŒber hinaus gibt es noch weitere Ă€quivalente Formulierungen, die sich durch einfache Operationen in diese Standardform bringen lassen:

‱ Minimierungsproblem statt Maximierungsproblem: Multiplikation des Zielfunktionsvektors c {\displaystyle c} mit − − 1 {\displaystyle -1}
‱ GrĂ¶ĂŸer-gleich- statt Kleiner-gleich-Bedingungen: Multiplikation der entsprechenden Ungleichungen mit − − 1 {\displaystyle -1}
‱ Gleichheitsbedingungen statt Ungleichheitsbedingungen: Ersetzung von a i x = b i {\displaystyle a_{i}x=b_{i}} durch a i x ≀ ≀ b i {\displaystyle a_{i}x\leq b_{i}} und − − a i x ≀ ≀ − − b i {\displaystyle -a_{i}x\leq -b_{i}}
‱ Variablen ohne NichtnegativitĂ€tsbedingung: Ersetzung von x {\displaystyle x} durch x â€Č − − x ″ {\displaystyle x'-x''} mit x â€Č , x ″ ≄ ≄ 0 {\displaystyle x',x''\geq 0}

Die lineare Optimierung behandelt nur Probleme, bei denen die Variablen beliebige reelle Zahlen annehmen dĂŒrfen. Ein (gemischt-)ganzzahliges lineares Programm, bei dem einige Variablen nur ganzzahlige Werte annehmen dĂŒrfen, ist kein Spezialfall, sondern – im Gegenteil – eine Verallgemeinerung. Solche Optimierungsprobleme sind im Allgemeinen NP-Ă€quivalent, d. h. vermutlich nicht effizient lösbar. Dieser Fall wird von der ganzzahligen linearen Optimierung behandelt.

Geometrische Interpretation

Ein lineares Programm lĂ€sst sich geometrisch interpretieren. Wenn a i x ≀ ≀ b i {\displaystyle a_{i}x\leq b_{i}} die i. Zeile eines linearen Programms in Standardform ist, dann beschreibt die Menge { x | a i x = b i } {\displaystyle \{x\;|\;a_{i}x=b_{i}\}} aller Punkte x {\displaystyle x} , die die zugehörige lineare Gleichung a i x = b i {\displaystyle a_{i}x=b_{i}} erfĂŒllen, eine Hyperebene im n {\displaystyle n} -dimensionalen Raum. Die Menge der Punkte, die die lineare Ungleichung a i x ≀ ≀ b i {\displaystyle a_{i}x\leq b_{i}} erfĂŒllen, besteht aus allen Punkten auf der einen Seite der Hyperebene (inklusive der Hyperebene selbst), bildet also einen Halbraum. Jede Zeile a i x ≀ ≀ b i {\displaystyle a_{i}x\leq b_{i}} teilt daher den n {\displaystyle n} -dimensionalen Raum in zwei HĂ€lften, wobei die Punkte in der einen HĂ€lfte zulĂ€ssig sind und in der anderen nicht. Die Menge

P := { x | A x ≀ ≀ b , x ≄ ≄ 0 } = { x | a i x ≀ ≀ b i , i = 1 , 
 
 , m , x ≄ ≄ 0 } {\displaystyle P:=\{x\;|\;Ax\leq b,\;x\geq 0\}=\{x\;|\;a_{i}x\leq b_{i},\;i=1,\ldots ,m,\;x\geq 0\}}

der Punkte, die alle Ungleichungen des LPs erfĂŒllen, ist genau der Schnitt dieser HalbrĂ€ume, also die Menge aller Punkte, die fĂŒr jede Ungleichung in der jeweiligen zulĂ€ssigen HĂ€lfte des Raumes liegen. Diese Lösungsmenge P {\displaystyle P} des linearen Programms bildet ein konvexes Polyeder, also ein n {\displaystyle n} -dimensionales Vieleck, in dem die Verbindungslinie zwischen zwei beliebigen Punkten von P {\displaystyle P} vollstĂ€ndig in P {\displaystyle P} enthalten ist. Ziel der Optimierung ist es, unter allen Punkten des Polyeders einen zu finden, der die lineare Funktion c : : x → → c T x {\displaystyle c\colon \,x\to c^{T}x} maximiert. Geometrisch entspricht dies der Verschiebung der Hyperebene { x | c T x = 0 } {\displaystyle \{x\;|\;c^{T}x=0\}} in Richtung des Vektors c {\displaystyle c} , bis die verschobene Hyperebene das Polyeder gerade noch berĂŒhrt. Die Menge aller BerĂŒhrungspunkte ist genau die Menge der Optimallösungen des linearen Programms.

Im nebenstehenden Bild ist diese Anordnung fĂŒr den Fall von nur zwei Variablen dargestellt. Eine Hyperebene im zweidimensionalen Raum ist eine Gerade, im Bild grĂŒn dargestellt. Jede dieser Geraden teilt den Raum in eine zulĂ€ssige und eine unzulĂ€ssige HĂ€lfte. Die Menge der Punkte, die auf der zulĂ€ssigen Seite jeder Geraden liegen, bilden das blau dargestellte Polyeder (Vieleck). Die rote Gerade stellt die Zielfunktion dar. Ziel ist es, sie so weit wie möglich in Richtung des roten Vektors c {\displaystyle c} zu verschieben, ohne das Polyeder zu verlassen. Im nebenstehenden Bild ist der rote BerĂŒhrungspunkt der Zielfunktionsgeraden mit dem Polyeder die einzige Optimallösung.

Beispiel aus der Produktionsplanung (zweidimensional)

Ein Unternehmen stellt zwei verschiedene Produkte her, fĂŒr deren Fertigung drei Maschinen A, B, C zur VerfĂŒgung stehen. Diese Maschinen haben eine maximale monatliche Laufzeit (KapazitĂ€t) von 170 Stunden (A), 150 Stunden (B) bzw. 180 Stunden (C). Eine Mengeneinheit (ME) von Produkt 1 liefert einen Deckungsbeitrag von 300 Euro, eine ME von Produkt 2 dagegen 500 Euro. Fertigt man eine ME von Produkt 1, dann benötigt man dafĂŒr eine Stunde die Maschine A und eine Stunde die Maschine B. Eine Einheit von Produkt 2 belegt zwei Stunden lang Maschine A, eine Stunde Maschine B und drei Stunden Maschine C. Ziel ist es, Produktionsmengen zu bestimmen, die den Deckungsbeitrag des Unternehmens maximieren, ohne die MaschinenkapazitĂ€ten zu ĂŒberschreiten. Fixkosten können in dem Optimierungsproblem ignoriert und anschließend addiert werden, da sie per Definition unabhĂ€ngig von den zu bestimmenden Produktionsmengen sind.

Mathematische Modellierung

Angenommen, der Betrieb fertigt pro Monat x 1 {\displaystyle x_{1}} ME von Produkt 1 und x 2 {\displaystyle x_{2}} ME von Produkt 2. Dann betrÀgt der Gesamtdeckungsbeitrag

G ( x 1 , x 2 ) = 300 x 1 + 500 x 2 . {\displaystyle G(x_{1},x_{2})=300x_{1}+500x_{2}.}

Diesen Wert möchte das Unternehmen maximieren. Da die MaschinenkapazitĂ€ten eingehalten werden mĂŒssen, ergeben sich die Nebenbedingungen:

x 1 + 2 x 2 ≀ ≀ 170 (Maschine A, rechts in schwarz eingezeichnet) x 1 + x 2 ≀ ≀ 150 (Maschine B, rechts in tuerkis eingezeichnet) 3 x 2 ≀ ≀ 180 (Maschine C, rechts in violett eingezeichnet) {\displaystyle {\begin{alignedat}{3}x_{1}&+&2x_{2}&\leq 170&&{\text{ (Maschine A, rechts in schwarz eingezeichnet)}}\\x_{1}&+&x_{2}&\leq 150&&{\text{ (Maschine B, rechts in tuerkis eingezeichnet)}}\\&&3x_{2}&\leq 180&&{\text{ (Maschine C, rechts in violett eingezeichnet)}}\end{alignedat}}}

Da außerdem keine negativen Produktionsmengen möglich sind, muss x 1 , x 2 ≄ ≄ 0 {\displaystyle x_{1},x_{2}\geq 0} gelten (NichtnegativitĂ€tsbedingung).

Geometrische Interpretation als Polyeder

Im nebenstehenden Bild sind die Ungleichungen aus dem obigen Beispiel als tĂŒrkise, schwarze und violette BeschrĂ€nkungen eingezeichnet. Zusammen definieren sie das (blau umrandete) Polyeder der zulĂ€ssigen Punkte. Die rotgestrichelten Linien stellen Iso-Gewinnfunktionen dar, d. h., alle Punkte auf einer solchen Linie haben denselben Zielfunktionswert. Da das Unternehmen möglichst viel Gewinn erzielen will, ist das Ziel der Optimierung, solch eine rot gestrichelte Linie so weit nach rechts oben zu schieben, dass sie gerade noch das Polyeder berĂŒhrt. Alle BerĂŒhrungspunkte sind dann optimal. In diesem Fall ist der Punkt (130,20) die eindeutige optimale Ecke, und der optimale Zielfunktionswert betrĂ€gt 49.000 Euro.

Im Allgemeinen ist die Optimallösung eines linearen Optimierungsproblems allerdings weder eindeutig noch ganzzahlig. Wenn beispielsweise beide Produkte den gleichen Deckungsbeitrag hĂ€tten, wĂ€ren die roten Iso-Gewinnfunktionen parallel zur Ungleichung x 1 + x 2 ≀ ≀ 150 {\displaystyle x_{1}+x_{2}\leq 150} . In diesem Fall wĂ€re jeder Punkt auf der Strecke zwischen (130,20) und (150,0) optimal, es gĂ€be also unendlich viele Optimallösungen.

Anwendungen

Die lineare Optimierung hat viele Anwendungen in der Praxis, von denen hier einige beispielhaft vorgestellt werden sollen.

Produktionsplanung

Wie in dem obigen Beispiel kann ein Unternehmen eine Reihe von Produkten mit bekanntem Deckungsbeitrag herstellen. Die Herstellung einer Einheit jedes dieser Produkte benötigt eine bekannte Menge an beschrÀnkten Ressourcen (ProduktionskapazitÀt, Rohmaterialien, Arbeitszeit etc.). Die Aufgabe ist die Erstellung eines Produktionsprogramms, d. h. die Festlegung, wie viel von jedem Produkt produziert werden soll, so dass der Gewinn des Unternehmens maximiert wird, ohne die RessourcenbeschrÀnkungen zu verletzen. Ein weiteres Beispiel sind Zuschnittsprobleme.

Mischungsprobleme

Eine Ă€hnliche Anwendung sind Mischungsprobleme, bei denen es darum geht, Zutaten zu einem Endprodukt zusammenzustellen, wobei die Menge der jeweiligen Zutaten innerhalb eines bestimmten Bereichs variiert werden kann. Ein Beispiel hierfĂŒr ist das 1947 von George Dantzig untersuchte DiĂ€t-Problem: Gegeben sind eine Reihe von Rohmaterialien (z. B. Hafer, Schweinefleisch, Sonnenblumenöl etc.) zusammen mit ihrem Gehalt an bestimmten NĂ€hrwerten (z. B. Eiweiß, Fett, Vitamin A etc.) und ihrem Preis pro Kilogramm. Die Aufgabe besteht darin, eines oder mehrere Endprodukte mit minimalen Kosten aus den Rohmaterialien zu mischen, unter der Nebenbedingung, dass bestimmte Mindest- und Höchstgrenzen fĂŒr die einzelnen NĂ€hrwerte eingehalten werden. Auch bei SchmelzvorgĂ€ngen treten solche Mischungsprobleme auf, wie z. B. in der Stahlherstellung.

Routing in Telekommunikations- oder Verkehrsnetzen

Ein klassisches Anwendungsgebiet der linearen Optimierung ist die Bestimmung eines Routings fĂŒr Verkehrsanforderungen in Telekommunikations- oder Verkehrsnetzen, oft in Verbindung mit KapazitĂ€tsplanung. Dabei mĂŒssen VerkehrsflĂŒsse so durch ein Netz geroutet werden, dass alle Verkehrsanforderungen erfĂŒllt werden, ohne die KapazitĂ€tsbedingungen zu verletzen. Diese sogenannten MehrgĂŒterflĂŒsse (englisch multicommodity flow) sind ein Beispiel fĂŒr ein Problem, das mit linearer Optimierung gut lösbar ist, fĂŒr das aber im allgemeinen Fall kein exakter Algorithmus bekannt ist, der nicht auf LP-Theorie basiert.

Spieltheorie

→

Hauptartikel

:

Lineare Optimierung (Spieltheorie)

Innerhalb der mathematischen Spieltheorie kann die lineare Optimierung dazu verwendet werden, optimale Strategien in Zwei-Personen-Nullsummenspielen zu berechnen. Dabei wird fĂŒr jeden Spieler eine Wahrscheinlichkeitsverteilung berechnet, bei der es sich um ein zufĂ€lliges MischungsverhĂ€ltnis seiner Strategien handelt. „WĂŒrfelt“ ein Spieler seine Strategie gemĂ€ĂŸ dieser Wahrscheinlichkeitsverteilung zufĂ€llig aus, ist ihm die bestmögliche Gewinnerwartung sicher, die er haben kann, wenn er seine Strategie unabhĂ€ngig von der seines Gegners wĂ€hlt.

Nichtlineare und gemischt-ganzzahlige Optimierung

Viele Anwendungsprobleme lassen sich mit kontinuierlichen Variablen nicht sinnvoll modellieren, sondern erfordern die Ganzzahligkeit einiger Variablen. Beispielsweise können keine 3,7 Flugzeuge gekauft werden, sondern nur eine ganze Anzahl, und ein Bus kann nur ganz oder gar nicht fahren, aber nicht zu zwei Dritteln. Bei der Verwendung von Branch-and-Cut zur Lösung solcher ganzzahliger bzw. gemischt-ganzzahliger linearer Optimierungsprobleme mĂŒssen sehr viele Ă€hnliche lineare Programme hintereinander als Unterproblem gelöst werden. Eine optimale ganzzahlige Lösung eines linearen Programms zu finden ist NP-vollstĂ€ndig, aber parametrisierbar in der Anzahl der Variablen. Es ist sogar NP-vollstĂ€ndig, irgendeine ganzzahlige Lösung eines linearen Programms zu finden. Eine Ausnahme ist hier, wenn die Restriktionsmenge durch eine total unimodulare Matrix gegeben ist, dann sind alle Ecken des Polyeders ganzzahlig. Auch zur Lösung nichtlinearer Optimierungsprobleme gibt es Algorithmen, in denen lineare Programme als Unterproblem gelöst werden mĂŒssen (z. B. Sequential Linear Programming).

Siehe auch

:

Gemischt-ganzzahlige Optimierung

,

Ganzzahlige lineare Optimierung

und

Nichtlineare Optimierung

Lösbarkeit aus theoretischer Sicht

Ein lineares Programm hat nicht immer eine Optimallösung. Drei FÀlle sind zu unterscheiden:

1. Das LP ist unzulĂ€ssig, weil sich Ungleichungen widersprechen (z. B. x ≀ ≀ 1 {\displaystyle x\leq 1} und x ≄ ≄ 2 {\displaystyle x\geq 2} ). In diesem Fall gibt es keine Lösung, die alle Ungleichungen erfĂŒllt, d. h., das zugehörige Polyeder ist die leere Menge.
2. Das LP ist unbeschrĂ€nkt, d. h., es gibt unendlich viele zulĂ€ssige Lösungen mit beliebig hohen Zielfunktionswerten (z. B. max { x | x ≄ ≄ 0 } {\displaystyle \max\{x\;|\;x\geq 0\}} ).
3. Das LP besitzt mindestens eine Optimallösung. Dies ist beispielsweise gegeben, falls das zugehörige Polyeder beschrÀnkt, also ein Polytop, und nichtleer ist.

Die Menge der Optimallösungen bildet eine SeitenflĂ€che (Ecke, Kante,
) des Polyeders, so dass es entweder keine, genau eine oder unendlich viele Optimallösungen gibt. Wenn das LP lösbar und beschrĂ€nkt ist, gibt es immer eine optimale Ecke, also einen optimalen Punkt, der nicht aus anderen Punkten des Polyeders konvex kombiniert werden kann. Diese Eigenschaft macht sich unter anderem das primale Simplex-Verfahren zunutze.

KomplexitÀt und Lösungsverfahren

Das Finden einer Optimallösung bzw. die Feststellung, dass ein LP keine Lösung besitzt, ist mit Hilfe von Innere-Punkte-Verfahren oder der Ellipsoidmethode in Polynomialzeit möglich, so dass die Lineare Optimierung aus Sicht der KomplexitĂ€tstheorie ein leicht lösbares Problem ist. Aus praktischer Sicht ist jedoch oft das Simplex-Verfahren schneller, obwohl es theoretisch exponentielle Laufzeit besitzt. Es ist bis heute unbekannt, ob es einen streng polynomialen Algorithmus zur Lösung allgemeiner linearer Programme gibt, also einen Algorithmus, dessen Laufzeit nicht von der GrĂ¶ĂŸe der auftretenden Zahlen abhĂ€ngt.

Simplex-Verfahren

→

Hauptartikel

:

Simplex-Verfahren

Das Simplex-Verfahren ist ein Basisaustauschverfahren, das im Jahre 1947 von George Dantzig entwickelt und seitdem wesentlich verbessert wurde; es ist der wichtigste Algorithmus zur Lösung linearer Programme in der Praxis. Die Grundidee besteht darin, von einer Ecke des Polyeders zu einer benachbarten Ecke mit besserem Zielfunktionswert zu laufen, bis dies nicht mehr möglich ist. Da es sich bei der linearen Optimierung um ein konvexes Optimierungsproblem handelt, ist die damit erreichte lokal optimale Ecke auch global optimal. Das Verfahren ist im nebenstehenden Bild illustriert: Ziel ist es, einen möglichst weit oben liegenden Punkt des Polyeders zu finden. In roter Farbe ist ein möglicher Pfad des Simplex-Verfahrens entlang der Ecken des Polyeders dargestellt, wobei sich der Zielfunktionswert mit jedem Schritt verbessert.

Aus komplexitĂ€tstheoretischer Sicht benötigt der Simplex-Algorithmus im schlechtesten Fall exponentielle Laufzeit. FĂŒr jede Variante des Algorithmus konnte bisher ein Beispiel konstruiert werden, bei dem der Algorithmus alle Ecken des Polyeders ablĂ€uft, meist basierend auf dem Klee-Minty-WĂŒrfel.cite-ref-5[5] Aus praktischer Sicht sind solche FĂ€lle allerdings sehr selten. Bei sogenannten entarteten linearen Programmen, bei denen eine Ecke durch mehr Ungleichungen definiert wird als unbedingt nötig (beispielsweise durch drei Ungleichungen im zweidimensionalen Raum), kann es allerdings passieren, dass der Algorithmus, wie in diesem Beispiel, immer wieder dieselbe Ecke betrachtet, anstatt zur nĂ€chsten Ecke zu wechseln. Dieses Problem tritt bei praktischen Planungsproblemen hĂ€ufig auf und kann dazu fĂŒhren, dass der Algorithmus nicht terminiert oder der Zielfunktionswert sich ĂŒber viele Iterationen hinweg nicht verbessert. Gute Simplex-Implementierungen entdecken solche FĂ€lle und behandeln sie beispielsweise durch eine leichte Perturbation (absichtliche numerische Störung) des Problems, die spĂ€ter wieder rĂŒckgĂ€ngig gemacht wird.

Unter der Voraussetzung, dass die Matrix A {\displaystyle A} dĂŒnnbesetzt ist (d. h. nur wenige Koeffizienten ungleich Null enthĂ€lt), was in der Praxis fast immer der Fall ist, können mit dem Simplex-Verfahren heute sehr große LPs in annehmbarer Zeit optimal gelöst werden. Ein großer Vorteil des Simplex-Verfahrens besteht darin, dass es nach dem HinzufĂŒgen einer Ungleichung oder Variable im LP oder nach einer leichten Änderung der Koeffizienten einen „Warmstart“ von einer vorher bereits erreichten Ecke aus durchfĂŒhren kann, so dass nur wenige Iterationen zum erneuten Finden einer Optimallösung notwendig sind. Dies ist insbesondere im Zusammenhang mit Schnittebenenverfahren oder Branch-and-Cut zur Lösung ganzzahliger linearer Programme von großer Bedeutung, wo sehr viele Ă€hnliche LPs in Serie gelöst werden mĂŒssen.

Innere-Punkte-Verfahren

→

Hauptartikel

:

Innere-Punkte-Verfahren

Innere-Punkte-Verfahren, auch Barrier-Verfahren genannt, nĂ€hern sich einer optimalen Ecke durch das Innere des Polyeders (siehe Bild). Der erste solche Algorithmus wurde 1984 von Narendra Karmarkar beschrieben. Seine Bedeutung lag vor allem darin, dass er der erste polynomiale Algorithmus zum Lösen linearer Programme war, der das Potential hatte, auch praktisch einsetzbar zu sein. Die entscheidenden DurchbrĂŒche, die Innere-Punkte-Verfahren konkurrenzfĂ€hig zum Simplex-Algorithmus machten, wurden aber erst in den 1990er-Jahren erzielt. Ein Vorteil dieser Verfahren ist, dass sie, im Gegensatz zum Simplex-Verfahren, in leichter Abwandlung auch zum Lösen quadratischer oder bestimmter nichtlinearer Programme eingesetzt werden können. Des Weiteren sind sie fĂŒr große, dĂŒnnbesetzte Probleme hĂ€ufig dem Simplex-Verfahren ĂŒberlegen. Ein Nachteil ist, dass sie sich nach dem HinzufĂŒgen einer Nebenbedingung oder Variablen im LP bei weitem nicht so effizient „warmstarten“ lassen wie das Simplex-Verfahren.

Ellipsoidmethode

→

Hauptartikel

:

Ellipsoidmethode

Die Ellipsoidmethode wurde ursprĂŒnglich in den Jahren 1976 und 1977 von David Yudin und Arkadi Nemirovski und unabhĂ€ngig davon von Naum Schor zur Lösung konvexer Optimierungsprobleme entwickelt. Im Jahre 1979 modifizierte der sowjetische Mathematiker Leonid Khachiyan das Verfahren und entwickelte damit den ersten polynomialen Algorithmus zur Lösung linearer Programme. FĂŒr praktische Zwecke ist er allerdings nicht geeignet. Die Ellipsoidmethode dient dazu, einen beliebigen Punkt in einem volldimensionalen Polyeder zu finden oder festzustellen, dass das Polyeder leer ist. Da man zeigen kann, dass die Lösung eines LPs Ă€quivalent ist zum Finden eines zulĂ€ssigen Punktes in einem geeignet definierten Hilfspolyeder, lĂ€sst sich mit Hilfe der Ellipsoidmethode (theoretisch) auch ein LP lösen.

Die Grundidee des Verfahrens besteht darin, ein Ellipsoid (im Bild rot) zu definieren, das alle Ecken des Polyeders (blau) enthĂ€lt. Anschließend wird festgestellt, ob der Mittelpunkt dieses Ellipsoids im Polyeder enthalten ist. Falls ja, hat man einen Punkt im Polyeder gefunden und kann aufhören. Andernfalls kann man das Halbellipsoid bestimmen, in dem das Polyeder enthalten sein muss, und ein neues, kleineres Ellipsoid um das Polyeder legen (im Bild grĂŒn). Nach einer Anzahl von Schritten, die polynomial von der KodierungslĂ€nge des LPs abhĂ€ngt, hat man entweder einen Punkt im Polyeder gefunden oder weiß, dass das Polyeder leer ist, weil es sonst grĂ¶ĂŸer sein mĂŒsste als das aktuelle Ellipsoid.

Weitere Methoden

FĂŒr einige Klassen von linearen Programmen gibt es spezielle Algorithmen, die theoretisch oder praktisch schneller laufen als z. B. der Simplexalgorithmus. Ein Beispiel hierfĂŒr ist die Ungarische Methode, die auf Zuordnungsprobleme angewandt werden kann. Lineare Programme mit zwei Variablen lassen sich nĂ€herungsweise zeichnerisch lösen. Diese Methode hat aber hauptsĂ€chlich didaktischen Wert, da in der Praxis auftretende LPs leicht mehrere Hunderttausende Variablen besitzen können.

DualitÀt

Obere Schranken

Um zu verifizieren, dass eine gĂŒltige Lösung x ∗ ∗ {\displaystyle x^{*}} optimal fĂŒr ein lineares Programm ist, versucht man, den Zielfunktionswert des Programms nach oben abzuschĂ€tzen. FĂŒr das obige Beispiel gilt etwa

x 1 + x 2 ≀ ≀ 150 ⇒ ⇒ 500 x 1 + 500 x 2 ≀ ≀ 500 ⋅ ⋅ 150 = 75000 {\displaystyle x_{1}+x_{2}\leq 150\;\Rightarrow \;500x_{1}+500x_{2}\leq 500\cdot 150=75000}

Da x 1 ≄ ≄ 0 {\displaystyle x_{1}\geq 0} und x 2 ≄ ≄ 0 {\displaystyle x_{2}\geq 0} folgt daraus, dass

G ( x 1 , x 2 ) = 300 x 1 + 500 x 2 ≀ ≀ 500 x 1 + 500 x 2 ≀ ≀ 75000 {\displaystyle G(x_{1},x_{2})=300x_{1}+500x_{2}\leq 500x_{1}+500x_{2}\leq 75000}

Die Optimallösung kann somit keinen Zielfunktionswert grĂ¶ĂŸer als 75000 {\displaystyle 75000} haben. Eine bessere AbschĂ€tzung erhĂ€lt man, indem man 300 {\displaystyle 300} Mal die zweite und 100 {\displaystyle 100} Mal die dritte Ungleichung addiert:

G ( x 1 , x 2 ) = 300 x 1 + 500 x 2 ≀ ≀ 300 ⋅ ⋅ ( x 1 + x 2 ) + 100 ⋅ ⋅ ( 3 x 2 ) = 300 x 1 + 600 x 2 ≀ ≀ 63000 {\displaystyle G(x_{1},x_{2})=300x_{1}+500x_{2}\leq 300\cdot (x_{1}+x_{2})+100\cdot (3x_{2})=300x_{1}+600x_{2}\leq 63000}

Dieses Verfahren lĂ€sst sich leicht verallgemeinern: WĂ€hlt man fĂŒr ein gegebenes LP in Standardform Multiplikatoren y ∈ ∈ R + m {\displaystyle y\in \mathbb {R} _{+}^{m}} , so ist jeder Vektor y T A {\displaystyle y^{T}A} eine obere Schranke, sofern y T A ≄ ≄ c T {\displaystyle y^{T}A\geq c^{T}} . Dies entspricht einer konischen Kombination der Spalten von A {\displaystyle A} . Die Bedingung y T A ≄ ≄ c T {\displaystyle y^{T}A\geq c^{T}} stellt sicher, dass sich die Koeffizienten von c T {\displaystyle c^{T}} fĂŒr x ≄ ≄ 0 {\displaystyle x\geq 0} gegen y T A {\displaystyle y^{T}A} abschĂ€tzen lassen. Der Zielfunktionswert der durch y {\displaystyle y} gegebenen obere Schranke ist somit y T b {\displaystyle y^{T}b} . Um die beste obere Schranke zu finden, kann man nun ein weiteres LP aufstellen:

min { y T b : y T A ≄ ≄ c T , y ≄ ≄ 0 } {\displaystyle \min \;\{y^{T}b\,:\,y^{T}A\geq c^{T},\;y\geq 0\}}

Dieses LP nennt man das duale Problem zu dem primalen Problem

max { c T x : A x ≀ ≀ b , x ≄ ≄ 0 } {\displaystyle \max \;\{c^{T}x\,:\,Ax\leq b,\;x\geq 0\}}

Die EintrÀge des Vektors y {\displaystyle y} werden als Multiplikatoren oder Dualvariablen bezeichnet. Die DualitÀt Linearer Programme ist ein Spezialfall der Lagrange-DualitÀt.

Falls ein lineares Programm aus einem kombinatorischen Optimierungsproblem entsteht, so hat das duale Programm oft eine anschauliche Interpretation; die nachfolgenden SÀtze können dann auch benutzt werden, um Resultate wie das Max-Flow-Min-Cut-Theorem herzuleiten.

Dualisierung beliebiger linearer Programme

FĂŒr lineare Programme, welche nicht in Standardform vorliegen, gelten die folgenden Vorschriften zur Dualisierung:

| primales LP | duales LP |
|---|---|
| max { c T x : A x ≀ b , x ≄ 0 } {\displaystyle \max \;\{c^{T}x\,:\,Ax\leq b,\;x\geq 0\}} | min { y T b : y T A ≄ c T , y ≄ 0 } {\displaystyle \min \;\{y^{T}b\,:\,y^{T}A\geq c^{T},\;y\geq 0\}} |
| max { c T x : A x = b , x ≄ 0 } {\displaystyle \max \;\{c^{T}x\,:\,Ax=b,\;x\geq 0\}} | min { y T b : y T A ≄ c T } {\displaystyle \min \;\{y^{T}b\,:\,y^{T}A\geq c^{T}\}} |
| max { c T x : A x ≀ b } {\displaystyle \max \;\{c^{T}x\,:\,Ax\leq b\}} | min { y T b : y T A = c T , y ≄ 0 } {\displaystyle \min \;\{y^{T}b\,:\,y^{T}A=c^{T},\;y\geq 0\}} |

FĂŒr Minimierungsprobleme gilt analog:

| primales LP | duales LP |
|---|---|
| min { c T x : A x ≄ b , x ≄ 0 } {\displaystyle \min \;\{c^{T}x\,:\,Ax\geq b,\;x\geq 0\}} | max { y T b : y T A ≀ c T , y ≄ 0 } {\displaystyle \max \;\{y^{T}b\,:\,y^{T}A\leq c^{T},\;y\geq 0\}} |
| min { c T x : A x = b , x ≄ 0 } {\displaystyle \min \;\{c^{T}x\,:\,Ax=b,\;x\geq 0\}} | max { y T b : y T A ≀ c T } {\displaystyle \max \;\{y^{T}b\,:\,y^{T}A\leq c^{T}\}} |
| min { c T x : A x ≄ b } {\displaystyle \min \;\{c^{T}x\,:\,Ax\geq b\}} | max { y T b : y T A = c T , y ≄ 0 } {\displaystyle \max \;\{y^{T}b\,:\,y^{T}A=c^{T},\;y\geq 0\}} |

Im Allgemeinen gilt:

| primales LP | duales LP |
|---|---|
| nichtnegative Variable | Ungleichung |
| nicht vorzeichenbeschrÀnkte Variable | Gleichung |
| Ungleichung | nichtnegative Variable |
| Gleichung | nicht vorzeichenbeschrÀnkte Variable |

Dabei ist zu beachten, dass bei Maximierungsproblemen die Ungleichungen stets in der Form A x ≀ ≀ b {\displaystyle Ax\leq b} und bei Minimierungsproblemen in der Form A x ≄ ≄ b {\displaystyle Ax\geq b} aufgeschrieben werden.

Eigenschaften des dualen Programms

Das primale und duale LP bilden ein duales Paar, es gilt also, dass aus der Dualisierung des dualen LP wieder das primale LP entsteht.

Des Weiteren gilt fĂŒr beliebige zulĂ€ssige primale bzw. duale Lösungen x , y {\displaystyle x,y} :

c T x ≀ ≀ y T A x ≀ ≀ y T b {\displaystyle c^{T}x\leq y^{T}Ax\leq y^{T}b}

Dabei gilt die erste Ungleichung, da x ≄ ≄ 0 {\displaystyle x\geq 0} und y T A ≄ ≄ c T {\displaystyle y^{T}A\geq c^{T}} und die zweite, weil A x ≀ ≀ b {\displaystyle Ax\leq b} und y ≄ ≄ 0 {\displaystyle y\geq 0} . Dieses Resultat ist als der schwache DualitĂ€tssatz bekannt. Er entspricht der schwachen DualitĂ€t in der Lagrange-DualitĂ€t.

Der starke DualitÀtssatz

Der starke DualitĂ€tssatz verschĂ€rft die obige Aussage: Wenn eines der beiden LPs eine beschrĂ€nkte Optimallösung besitzt, dann auch das andere, und die optimalen Zielfunktionswerte sind in diesem Fall gleich. FĂŒr jede optimale Lösung x ∗ ∗ {\displaystyle x^{*}} des primalen und jede optimale Lösung y ∗ ∗ {\displaystyle y^{*}} des dualen Problems gilt also

c T x ∗ ∗ = ( y ∗ ∗ ) T b {\displaystyle c^{T}\;x^{*}=(y^{*})^{T}b} .

Dies entspricht der starken DualitÀt in der Lagrange-DualitÀt. Man kann zeigen, dass folgende ZusammenhÀnge gelten:

‱ Das duale Problem hat genau dann eine beschrĂ€nkte Optimallösung, wenn das primale Problem eine beschrĂ€nkte Optimallösung besitzt.
‱ Wenn das primale Problem keine zulĂ€ssige Lösung hat, ist das duale Problem unbeschrĂ€nkt oder hat auch keine zulĂ€ssige Lösung.
‱ Wenn das primale Problem unbeschrĂ€nkt ist, hat das duale Problem keine zulĂ€ssige Lösung.

Diese und weitere SĂ€tze bilden die Grundlage fĂŒr alle Verfahren, die mit primalen und dualen Schranken fĂŒr den Wert einer Optimallösung arbeiten, wie beispielsweise Branch-and-Cut und Schnittebenenverfahren.

Der Satz vom komplementÀren Schlupf

→

Hauptartikel

:

KomplementÀrer Schlupf

ZusĂ€tzlich zu den obigen ZusammenhĂ€ngen ĂŒber die Lösbarkeit des primalen bzw. dualen Problems gilt die folgende Aussage:

Falls sowohl das primale als auch das duale Problem zulĂ€ssige Lösungen haben, so existiert ein Paar x ∗ ∗ , y ∗ ∗ {\displaystyle x^{*},y^{*}} von Lösungen mit der Eigenschaft, dass

y i ∗ ∗ ⋅ ⋅ ( b i − − ( A x ∗ ∗ ) i ) = 0 ∀ ∀ i = 1 , 
 
 , m {\displaystyle y_{i}^{*}\cdot (b_{i}-(Ax^{*})_{i})=0\;\;\;\forall i=1,\ldots ,m}

Dies bedeutet, dass y i ∗ ∗ > 0 ⇒ ⇒ ( A x ∗ ∗ ) i = b i {\displaystyle y_{i}^{*}>0\;\Rightarrow \;(Ax^{*})_{i}=b_{i}} und umgekehrt ( A x ∗ ∗ ) i < b i ⇒ ⇒ y i ∗ ∗ = 0 {\displaystyle (Ax^{*})_{i}<b_{i}\;\Rightarrow \;y_{i}^{*}=0} . Hierbei bezeichnet ( A x ∗ ∗ ) i {\displaystyle (Ax^{*})_{i}} die i {\displaystyle i} -te Komponente des Vektors A x ∗ ∗ {\displaystyle Ax^{*}} .

Diese Lösungen sind auch optimal, da in diesem Fall die obigen Ungleichungen mit Gleichheit erfĂŒllt sind:

c T x ∗ ∗ = ( y ∗ ∗ ) T A x ∗ ∗ = ( y ∗ ∗ ) T b {\displaystyle c^{T}x^{*}=(y^{*})^{T}Ax^{*}=(y^{*})^{T}b} .

Diese zusÀtzliche Eigenschaft wird zum Beispiel bei primal-dualen Algorithmen ausgenutzt, um die OptimalitÀt einer Lösung zu verifizieren.

Äquivalenz von Optimierungs- und ZulĂ€ssigkeitsproblemen

Der starke DualitĂ€tssatz ermöglicht es ebenfalls, Optimierungsprobleme auf ZulĂ€ssigkeitsprobleme zu reduzieren: Anstatt das Problem max { c T x : A x ≀ ≀ b , x ≄ ≄ 0 } {\displaystyle \max \;\{c^{T}x\,:\,Ax\leq b,\;x\geq 0\}} zu lösen, kann man ebenso gut ein Paar von Lösungen finden, die den folgenden Bedingungen gehorchen:

A x ≀ ≀ b , x ≄ ≄ 0 y T A ≄ ≄ c T , y ≄ ≄ 0 c T x ≄ ≄ y T b {\displaystyle {\begin{aligned}Ax&\leq b,\;x\geq 0\\y^{T}A&\geq c^{T},\;y\geq 0\\c^{T}x&\geq y^{T}b\\\end{aligned}}}

Dabei stellen die ersten beiden Bedingungen sicher, dass x {\displaystyle x} eine zulĂ€ssige Lösung des Problems ist, wĂ€hrend die nĂ€chsten Bedingungen dafĂŒr sorgen, dass y {\displaystyle y} gĂŒltig fĂŒr das duale Programm ist. Die letzte Ungleichung wird nur von solchen Lösungspaaren x , y {\displaystyle x,y} erfĂŒllt, deren Zielfunktionswerte ĂŒbereinstimmen. Dies ist genau dann der Fall, wenn es sich bei x {\displaystyle x} und y {\displaystyle y} um die Optimallösungen der beiden Probleme handelt. Das obige Optimierungsproblem hat damit eine Optimallösung genau dann wenn der obige Polyeder nicht leer ist. Offensichtlich kann man die ZulĂ€ssigkeit eines Problems auch durch Lösung eines Optimierungsproblems entscheiden, man wĂ€hlt dazu beispielsweise den Nullvektor als Zielfunktion. Damit sind lineare Optimierungsprobleme und ZulĂ€ssigkeitsprobleme von Polyedern Ă€quivalent bezĂŒglich ihrer ZeitkomplexitĂ€t.

Literatur

‱ Robert Bixby: Solving real-world linear programs: A decade and more of progress. In: Operations Research. Band 50, Nr. 1, 2002, S. 3–15.
‱ George B. Dantzig: Lineare Programmierung und Erweiterungen. Springer, 1966. (Originalausgabe: Linear Programming and Extensions. Rand Corp., Santa Monica 1959)
‱ Vaơek Chvátal: Linear Programming. Freeman, New York 1983, ISBN 0-7167-1587-2.
‱ Alexander Schrijver: Theory of Linear and Integer Programming. Wiley, 1998, ISBN 0-471-98232-6.
‱ Peter Knabner, Wolf Barth: Lineare Algebra. Grundlagen und Anwendungen. Springer Spektrum, Berlin/Heidelberg 2013, ISBN 978-3-642-32185-6.
‱ F. L. Hitchcock: The distribution of a product from several sources to numerous localities. In: Journal of Mathematical Physics. Band 20, 1941, S. 224–230.
‱ Leonid Kantorowitsch: Mathematical Methods of Organizing and Planning Production. In: Management Science. Vol. 6, No. 4, 1960, S. 366–422. (online auf: jstor.org)
‱ Klaus Hagendorf: OpenOffice calc Solver Lösungen der Beispiele in Kantorowitschs Artikel von 1939. (online auf: eurodos.free.fr, ZIP; 521 kB)
‱ Wolfgang Domschke, Andreas Drexl, Robert Klein, Armin Scholl: EinfĂŒhrung in Operations Research. 9. Auflage. Springer, Berlin 2015, ISBN 978-3-662-48215-5, Kapitel 2

Einzelnachweise

cite-note-11. ↑ Mathematical Methods of Organizing and Planning Production. (PDF; 1,4 MB). In: Management Science. Band 6, Nr. 4 (Juli 1960), S. 366–422.
cite-note-22. ↑ Heiner MĂŒller-Merbach: Operations Research. 3. Auflage. Verlag Franz Vahlen, MĂŒnchen 1973, ISBN 3-8006-0388-8, S. 89.
cite-note-33. ↑ Robert E. Bixby: A brief history of linear and mixed-integer programming computation. In: In: Optimization Stories. EMS Press, 2012, ISBN 978-3-936609-58-5, S. 107–121. Archiviert vom Original am 5. Juli 2017; abgerufen am 11. Juni 2025.
cite-note-44. ↑ N. Karmarkar: A new polynomial-time algorithm for linear programming. Combinatorica 4 (1984), Nr. 4, 373–395.
cite-note-55. ↑ Harvey J. Greenberg: Klee-Minty Polytope Shows Exponential Time Complexity of Simplex Method. University of Colorado at Denver, 1997 (PDF), Archivlink